package com.Questions.hash;


import java.util.HashMap;
import java.util.*;

/**
 * 最长回文串
 */
public class leetcode409 {
    public int longestPalindrome(String s) {
        // 创建一个HashMap来统计每个字符出现的次数
        HashMap<Character,Integer> map = new HashMap<>();
        // 遍历字符串s，统计每个字符的出现次数
        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            if(map.containsKey(c)){
                // 如果字符已经出现过，次数加1
                int temp = map.get(c) + 1;
                map.put(c, temp);
            }else{
                // 如果是首次出现，计数为1
                map.put(c, 1);
            }
        }
        // 初始化最长回文长度为0
        int ans = 0;
        // 创建一个标志位，记录是否有奇数次出现的字符
        boolean even = false;
        // 遍历map中所有的值（即字符的出现次数）
        for(int temp : map.values()){
            if(temp % 2 == 0){
                // 如果字符出现偶数次，全部计入回文长度
                ans += temp;
            }else{
                // 如果字符出现奇数次，减一后的偶数部分计入回文长度
                ans += temp - 1;
                even = true;
            }
        }
        // 如果有奇数次出现的字符，最长回文长度可以额外加一
        return even == true ? ans + 1 : ans;
    }
}